МІНІСТЕРСТВО ОСВІТИ ТА НАУКИ УКРАЇНИ
НАЦІОНАЛЬНИЙ УНІВЕРСИТЕТ “ЛЬВІВСЬКА ПОЛІТЕХНІКА”
ОПРАЦЮВАННЯ АГРЕГОВАНИХ ТИПІВ ДАНИХ МОВОЮ С
МЕТОДИЧНІ ВКАЗІВКИ
до лабораторних робіт
з дисципліни
“Проблемно-орієнтовані мови програмування”
для студентів базового напрямку 6.0804 "Комп’ютерні науки"
Затверджено
на засіданні кафедри
програмного забезпечення.
Протокол № 5 від 18 .02 .2004 р.
Львів – 2004
“Опрацювання агрегованих типів даних мовою С”: Методичні вказівки до лабораторних робіт/ Укл.: В.М. Семотюк, Є.В Левус, Т.О. Кототєєва. – Львів: Видавництво Національного університету “Львівська політехніка”, 2004. – 23 с.
Укладачі
Семотюк В.М., канд. тех. наук, доцент каф. програмного забезпечення
Левус Є.В, канд. тех. наук, ст. викладач каф. програмного забезпечення
Коротєєва Т.О., канд. тех. наук, доцент каф. програмного забезпечення
Відповідальний за випуск: Грицик В.В.,
д-р. техн. наук, професор
Рецензенти: Камінський Р.М., канд. ф.-м. наук, доцент кафедри ПЗ
Марцишин Р.С., канд. техн. наук, доцент кафедри АСУ
Лабораторна робота № 1
Тема: засоби мови C для опрацювання символьних рядків
Мета: здобути практичні навики опрацювання текстової інформації з врахуванням особливостей організації символьних рядків у мові С
Теоретичні відомості
Особливим випадком масиву є так званий рядковий літерал - послідовність будь-яких символів, укладених у парні подвійні лапки. У С, на відміну від багатьох інших мов програмування, відсутній спеціальний рядковий тип. Замість цього рядковий літерал у С представляється в пам'яті комп’ютера як масив елементів типу char, наприкінці якого поміщений символ '\0' (нуль-термінатор). Такий масив називають рядком у форматі ASCIIZ або просто ASCIIZ-рядком. Як і з будь-яким масивом символів, із рядковим літералом зв'язаний вказівник-константа на перший елемент масиву.
Адреса першого символу рядкового літерала використовується по-різному, у залежності від того, для чого використовується літерал. Якщо рядковий літерал застосовується для ініціалізації масиву типу char, адреса його першого символу стає синонімом імені масиву.
Якщо літерал використовується для ініціалізації вказівника типу char *, адреса першого символу літерала буде початковим значенням вказівника.
І, нарешті, якщо літерал використовується у виразі в тих місцях, де дозволяється застосовувати вказівник, компілятор підставляє у вираз замість літерала адресу першого його символу.
Важливо пам’ятати, що при виконанні операції присвоювання в комірку пам'яті, відведеній для вказівника, пересилається не масив символів, а тільки вказівник на його початок, тобто адреса першого символу літерала.
Ім'я масиву - це приклад вказівника-константи. Тому помилкою буде спроба використовувати його в деяких операціях адресної арифметики. Наприклад, не можна виконати "пересилку" рядка символів у масив.
Спеціальна опція управляє роботою компілятора з літералами (у IDE це - Main Menu-Options-Code Generation-Merge Duplicated Strings). Якщо опція виключена (-d-для компілятора командного рядка), для кожного рядкового літерала в сегменті даних програми буде створений свій ASCIIZ-рядок.
Якщо опція включена (-d для компілятора командного рядка), компілятор блокує появу цілком ідентичних рядкових літералів у пам'яті. Якщо в тексті програми зустрічається літерал, цілком ідентичний раніше записаному, новий масив не створюється, а використовується посилання на вже наявну копію.
При замовчуванні розглянута опція виключена.
Завдання
Вважаючи, що введене речення з клавіатури складається з довільної кількості слів, між якими є довільна кількість пробілів, і закінчується речення крапкою, виконати один з таких варіантів завдань:
Посортувати всі слова тексту за першою буквою згідно з алфавітом і видрукувати їх у стовпчик.
Надрукувати введене речення трьома способами: а) великими літерами; б) починаючи кожне слово великою літерою; в) великі літери замінити...